perm filename OO7.FAI[CMS,LCS]1 blob
sn#171827 filedate 1975-08-06 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00009 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE OO
C00004 00003 LOOP: PUSHJ P,INTY
C00005 00004 EVAL: HRRZI MA,1
C00009 00005 BACK: HRRZI 6,-2(CX)
C00012 00006 GETO: SKIPN OU
C00014 00007 INTRU: MOVE EN,JOBCNI
C00018 00008 SAVIT: HRRZM 6,FIXFLG
C00020 00009 TABL: REPEAT 15,{JFCL↔}
C00023 ENDMK
C⊗;
TITLE OO
EXTERNAL JOBAPR,JOBTPC,JOBCNI,JOBFF,JOBREL,JOBDDT,$I
FL←4 ↔ EN←7 ↔ TS←10 ↔ OU←11 ↔ CX←13
MA←14 ↔ N←15 ↔ P←17 ↔ MEM←17000
INT: HRRZI EN,INTRU
HRRZM EN,JOBAPR
FILIN: HRRZI EN,MEM+200
CORE EN,
HALT
OPEN DEVN
JRST ERRO
MOVE 6,PPN
MOVEM 6,IFNAM+3
LOOKUP IFNAM
JRST ERRO
MOVE EN,INPO
SETZ TS,
INPUT EN
HRRZ EN,MEM
HRRZI N,MEM(EN)
HRRM N,INTY
SOS INTY
CORE N,
JRST ERRO
SUBI EN,200
JUMPLE EN,RST
IORI EN,177
MOVNS EN
HRLZI EN,-1(EN)
HRRI EN,MEM+177
INPUT EN
JRST RST
ERRO: OUTSTR QMARK
JRST RST
FILO: MOVE 6,TMP
MOVEM 6,(N)
AOJ N,
SUBI N,MEM
HRRZM N,MEM
IORI N,177
MOVNS N
HRLZI N,-1(N)
HRRI N,MEM-1
OPEN DEVN
JRST ERRO
SETZM OFNAM+3
ENTER OFNAM
JRST ERRO
SETZ 16,
OUTPUT N
RELEAS
RST: RESET
SETZM PTNUM
MOVE P,PDPO
MOVE EN,IPC
INTENB EN,
OUTSTR CRLF
HRRZ N,INTY
MOVE OU,(N)
MOVEM OU,TMP
TLNN OU,777777
SKIPA OU,(OU)
ADD OU,ONEB
HRRZI TS,(N)
PUSHJ P,GETO
LOOP: PUSHJ P,INTY
PUSHJ P,EVAL
PUSHJ P,GETO
JRST LOOP
INTY: HRRZI N,MEM+1
HRRZI TS,(N)
SKIPN PTOFL
OUTSTR ASTR
IWAIT
INCHRS EN
JRST .-2
INLIN: HRRZM EN,(TS)
SETZM 1(TS)
ADDI TS,2
INCHRS EN
CAIA
JRST INLIN
SKIPL OU,LITFLG
JRST (OU)
POPJ P,
LITCK: CAME EN,LITCHR
JRST INTY+3
SETOM LITFLG
POPJ P,
STLIT: SKIPL FIXFLG
POPJ P,
IWAIT
INCHRS LITCHR
JRST .-2
SUBI TS,2
HRRZI 6,LITCK
HRRZM 6,LITFLG
HRRZI 6,POPS
HRRZM 6,FIXFLG
SUB P,TWOB
PUSH P,RETRN
JRST INTY+4
EVAL: HRRZI MA,1
HRRZI CX,(N)
JRST BGIN
MVM: HRLI OU,400000(MA)
HRRZI 6,2
JRST LMVM
LAEQ: HRRZI 6,2
CAIE OU,(MA)
ADDI 6,2
SUBI 5,2
HLL OU,(5)
LMVM: MOVEM OU,(5)
SETZM 1(5)
ADDI 5,2
SUBI TS,(6)
ADDI 6,(5)
HRLZI 6,(6)
HRRI 6,(5)
BLT 6,(TS)
JRST LKMO
FDEQ: MOVE 4,MEM(MA)
HRRZI 5,(N)
LKMO: CAMN 4,(5)
JRST EQU
ADIN: ADDI 5,2
CAIGE 5,(TS)
JRST LKMO
ADDI MA,2
BGIN: CAIGE MA,-MEM(N)
JRST FDEQ
HRRZI MA,-MEM(CX)
ADDI N,2
CAIGE N,(TS)
JRST FDEQ
JRST BACK
EXCT: HLRZ 6,6
XCT TABL(6)
JRST CKEX1+2
EQU: HRRZI OU,(MA)
CAILE TS,2(5)
CAIG N,MEM+2(MA)
JRST CKLA
MOVE 6,MEM+2(MA)
CAMN 6,2(5)
HRRI OU,2(MA)
CKLA: CAIL 5,2(N)
SKIPL 6,-2(5)
JRST .+3
CAIN MA,2(6)
JRST LAEQ
CAIE OU,(MA)
JRST MVM
SKIPL 1(5)
SKIPN 6,MEM+1(OU)
JRST ADIN
CKEX1: TRNN 6,777777
JRST EXCT
HRLI OU,400001(OU)
AOJ OU,
MOVEM OU,1(5)
DOUT: CAIGE CX,-2(TS)
JRST ADIN
BACK: HRRZI 6,-2(CX)
ADDI 6,2
SKIPGE 1(6)
JRST NEGA+1
SKIPGE OU,(6)
AOBJN OU,NEGA
HRRZI OU,-MEM(6)
HRLI OU,400000(OU)
NEGA: MOVEM OU,1(6)
CAIGE 6,-2(TS)
JRST BACK+1
CAIE TS,2(CX)
JRST NOT1
SUBI TS,2
MOVE EN,(TS)
SUB OU,ONEB
CAME OU,EN
CAIN CX,MEM(OU)
AOBJN OU,NEW1
SKIPL FL,FIXFLG
AOBJN OU,FIXIT
HRRZI EN,MEM+1(OU)
ADD OU,ONEB
CKSAV: SKIPN SAVFLG
POPJ P,
HRRM TS,INTY
MOVEM EN,TMP
POPJ P,
NEW1: SKIPGE FL,FIXFLG
JRST CKSAV
HRRZI OU,-MEM+1(CX)
HRLI OU,400000(OU)
JRST ADTS
NOT1: HRRZI EN,-MEM-2(TS)
HRLI EN,400000-MEM(CX)
MOVE OU,EN
ADD OU,ONEB
SKIPGE FL,FIXFLG
JRST CKSAV
MOVEM EN,(TS)
MOVEM OU,1(TS)
HRRZI OU,-MEM+1(TS)
HRLI OU,400000(OU)
ADTS: ADDI TS,2
FIXIT: SKIPL EN,TMP
JRST CKFLS
MOVEM EN,(TS)
HRRZI EN,1(TS)
ADDI TS,2
CKFLS: PUSHJ P,(FL)
SETOM FIXFLG
JRST CKSAV
GETO: SKIPN OU
POPJ P,
HRRZI MA,(TS)
HRLI MA,700
SKIPE PTOFL
HRLI MA,1100
ADDI TS,200
TLZN OU,400000
TRNN OU,400000
JRST GOUT
MOVE EN,OU
HRRZI 4,777775
JRST MKOUT
PUDO: HRLI OU,(4)
PUSH TS,OU
MOVE OU,EN
GOUT: HLRZ 4,OU
MOR: MOVE EN,MEM(4)
TLZE EN,400000
JRST PUDO
TRNN EN,400000
JRST DPCH
MKOUT: HLRZ 6,EN
HRLI EN,(EN)
TRZ EN,400000
MOVEM EN,MEM(6)
CAIA
DPCH: IDPB EN,MA
ADO: ADDI 4,2
CAIG 4,(OU)
JRST MOR
TLNN TS,777777
JRST TYOUT
POP TS,OU
HLRZ 4,OU
JRST ADO
TYOUT: HRRZI EN,15
IDPB EN,MA
HRRZI EN,12
IDPB EN,MA
SETZ EN,
IDPB EN,MA
SUBI TS,177
SKIPE PTOFL
JRST PTOUT
OUTSTR SPACE
OUTSTR (TS)
POPJ P,
INTRU: MOVE EN,JOBCNI
TLNE EN,20000
DISMIS
IMSKCL 1,EN
MOVE OU,JOBTPC
TRNE EN,20000
JRST CORUP
HRRZI 5,(OU)
CAIE 5,.+7
MOVEM OU,IPC+1
UWAIT
DEBREAK
HRRZ 1,PTNUM
POLO: PTOCNT 1
SKIPG 2
INTJEN IPC
HRRZI 2,PTNUM+2
PTRDS 1
OUTSTR (2)
JRST POLO
CORUP: SOJ OU,
MOVEM OU,IPC+1
UWAIT
DEBREAK
HRRZ 1,JOBREL
AOJ 1,
CORE 1,
JRST TABL+77
INTJEN IPC
PTBEG: SKIPN PTNUM
PTYGET PTNUM
POPJ P,
HRLZI 6,4
PTGETL PTNUM
ORM 6,PTNUM+1
PTSETL PTNUM
HRRZI 6,5
HRRZM 6,PTNUM+1
PTJOBX PTNUM
POPJ P,
SETON: SETOM PTOFL
OUTSTR CRLFD
POPJ P,
PTEND: SKIPN PTNUM
POPJ P,
PTYREL PTNUM
SETZM PTNUM
PTOFF: SETZM PTOFL
OUTSTR CRLF
POPJ P,
PTON: SKIPE PTNUM
JRST SETON
POPJ P,
PTCALL: SKIPN PTNUM
POPJ P,
MOVE 6,CALLC
MOVEM 6,(TS)
PTOUT: MOVE EN,PTNUM
PTWRS9 EN
POPJ P,
SAVIT: HRRZM 6,FIXFLG
OUTSTR CRLF
FIXTS: SUBI TS,2
SETZ OU,
SUB P,ONEB
JRST DOUT
CRFIX: CAIGE 5,-2(TS)
POPJ P,
JRST FIXTS
INDER: HRRZI 6,.+2
JRST SAVIT
MOVEM OU,(EN)
POPJ P,
LITA: HRRZI 6,.+2
JRST SAVIT
SUB OU,ONEB
MOVEM OU,(EN)
POPJ P,
RPLACE: HRRZI 6,.+2
JRST SAVIT
HRR OU,MEM(OU)
TLZ OU,400000
TRO OU,400000
MOVEM OU,(EN)
POPJ P,
ADER: HRRZI 6,.+2
JRST SAVIT
MOVE 4,MEM-1(OU)
MOVEM 4,2(TS)
CAIE TS,1(OU)
JRST OLD1
SUBI TS,2
MOVE OU,(OU)
OLD1: MOVEM OU,3(TS)
MOVE 5,(EN)
MOVE 4,MEM-1(5)
MOVEM 4,(TS)
MOVEM 5,1(TS)
HRRZI OU,-MEM+2(TS)
HRLI OU,400000-MEM(TS)
MOVEM OU,4(TS)
AOBJP OU,
MOVEM OU,5(TS)
HRRZI OU,-MEM+5(TS)
HRLI OU,400000(OU)
MOVEM OU,(EN)
ADDI TS,6
POPJ P,
TABL: REPEAT 15,{JFCL↔}
PUSHJ P,CRFIX
REPEAT 24,{JFCL↔}
PUSHJ P,STLIT
REPEAT 11,{JFCL↔}
PUSHJ P,PTOFF
JFCL
PUSHJ P,PTON
REPEAT 13,{JFCL↔}
PUSHJ P,INDER
REPEAT 4,{JFCL↔}
JSR $I
JFCL
PUSHJ P,ADER
JFCL
PUSHJ P,PTCALL
REPEAT 2,{JFCL↔}
PUSHJ P,FILIN
REPEAT 4,{JFCL↔}
PUSHJ P,PTEND
PUSHJ P,LITA
JFCL
SETZM SAVFLG
PUSHJ P,FILO
PUSHJ P,PTBEG
JFCL
PUSHJ P,RPLACE
SETOM SAVFLG
REPEAT 53,{JFCL↔}
POPS: POPJ P, ↔ PDPO: IOWD 100,PDL
PDL: BLOCK 100 ↔ PTOFL: 0
IPC: 21000,,20000 ↔ 0 ↔ PPN: 'CMSLCS'
DEVN: 17 ↔ SIXBIT/DSK/ ↔ 0
IFNAM: SIXBIT/ALY/ ↔ SIXBIT/OOP/ ↔ BLOCK 2
OFNAM: SIXBIT/LAST/ ↔ SIXBIT/OOP/ ↔ BLOCK 2
INPO: IOWD 200,MEM ↔ QMARK: 45767706424
CRLF: 64240,,0 ↔ ASTR: ASCIZ/*/
SPACE: ASCIZ/ / ↔ CALLC: 600600,,0
CRLFD: 64245,,600000 ↔ FIXFLG: -1
TMP: 0 ↔ SAVFLG: -1
LITFLG: -1 ↔ LITCHR: LITCK
ONEB: 1,,1 ↔ TWOB: 2,,2
RETRN: LOOP+2 ↔ PATCH: BLOCK 100
PTNUM: 0 ↔ BLOCK 400
END INT